
$(document).ready(function() {

    // TEMPORADAS

    //variables globales
    nDivs = $("#nuevaTemporada").data("temporadas");
    nPeriodos = new Array();
    deletes = new Array();
    dias = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);




    //funcion encargada de crear una nueva temporada
    function crearDivTemporada() {
        nDivs++;
        nPeriodos[nDivs] = 1;
        //div
        $clon = $("#clon").clone(); // lo clono
        $clon.attr("id", "temp_" + nDivs);  //le cambio el id       
        $clon.removeClass("hide");  // lo muestro
        $clon.appendTo("#temporadas");  // lo agrego
        //lista
        $listaPeriodos = $("#temp_" + nDivs + " #listaPeriodos");
        $listaPeriodos.attr("id", "listaPeriodos_" + nDivs);

        //boton para eliminar la temporada
        $eliminarTemp = $("#temp_" + nDivs + " #eliminarTemp");
        $eliminarTemp.attr("id", "eliminarTemp_" + nDivs);

        //boton para editar el nombre
        $eliminarTemp = $("#temp_" + nDivs + " #cambiarTemp");
        $eliminarTemp.attr("id", "cambiarTemp_" + nDivs);

        //cambiar nombre
        $cambiarNombre = $("#temp_" + nDivs + " #nombre");
        $cambiarNombre.attr("id", "nombre_" + nDivs);
        $cambiarNombre.attr("name", "nombre_" + nDivs);

        //cambiamos los datos del periodo
        $periodo = $("#temp_" + nDivs + " #periodo");
        $periodo.attr("id", "periodo_" + nDivs + "_1");

        //ponemos id's a las fechas iniciales

        $desde = $("#listaPeriodos_" + nDivs + " #sdm_");
        $desde.attr("id", "sdm_" + nDivs + "_1");
        $desde.attr("name", "sdm_" + nDivs + "_1");
        $desde.addClass("actualizable");
        $desde = $("#listaPeriodos_" + nDivs + " #sdd_");
        $desde.attr("id", "sdd_" + nDivs + "_1");
        $desde.attr("name", "sdd_" + nDivs + "_1");
        $desde.addClass("actualizable");

        $hasta = $("#listaPeriodos_" + nDivs + " #shm_");
        $hasta.attr("id", "shm_" + nDivs + "_1");
        $hasta.attr("name", "shm_" + nDivs + "_1");
        $hasta.addClass("actualizable");
        $hasta = $("#listaPeriodos_" + nDivs + " #shd_");
        $hasta.attr("id", "shd_" + nDivs + "_1");
        $hasta.attr("name", "shd_" + nDivs + "_1");
        $hasta.addClass("actualizable");

        //boton para crear nuevos periodos
        $botonPeriodo = $("#temp_" + nDivs + " #nuevoPeriodo"); // selecciono su boton de temporadas
        $botonPeriodo.attr("id", "nuevoPeriodo_" + nDivs); // cambiar         

        $("#verDivs").addClass("btn-success");
    }

    //funcion que carga cuantos periodos tiene cada tempodrada
    $(".nuevoPeriodo").each(function() {
        if ($(this).data("periodos") != undefined) {
            temp = $(this).attr("id").split("_")[1]; //obtenemos a que temporada pertenece
            nPeriodos[temp] = $(this).data("periodos");
        }
    });


    //funcion que pone el nombre de la temporada
    $("#guardarNombreTemporada").click(function() {       
        name=$("#valorNombreTemporada").val();
        if(name.length>0){
            crearDivTemporada();
            $("#temp_" + nDivs + " b").text(name);
            $("#nombre_" + nDivs).attr('value', name);
            // $("#cancelarNombreTemporada").trigger("click");
            $('#modalAgregarTemporada').modal('hide');
            $("#valorNombreTemporada").val("");
        }else{
            $("#error-nombre-temporada").show().fadeOut(5000);
        }
    });
    
    $("#cancelarNombreTemporada").click(function(){
        $('#modalAgregarTemporada').modal('hide');
    });

    //funcion que muestra un modal para cambiar el nombre de una temporada
    $(document).on('click',".cambiar-nombre", function() {
        id = $(this).attr("id").split("_")[1];
        $("#valorEditarNombreTemporada").attr("value", $("#temp_" + id + " b").text());
        $("#editarTemporada").trigger('click');
        $("#modalEditarTemporada").data("temporada", id);
    });

    //funcion que edita el nombre de una temporada
    $("#editarNombreTemporada").click(function() {
        name=$("#valorEditarNombreTemporada").val();
        if(name.length>0){
            $("#temp_" + $("#modalEditarTemporada").data("temporada") + " b").text(name);
            $("#nombre_" + $("#modalEditarTemporada").data("temporada")).attr('value', name);
            $("#cancelarEditarNombreTemporada").trigger("click");
            $("#valorNombreTemporada").val("");
            $("#verDivs").addClass("btn-success");
        }else{
            $("#error-editar-nombre-temporada").show().fadeOut(5000);
        }
    });


    //funcion que crear un nuevo perido
    $(document).on('click',".nuevoPeriodo", function(e) {  // le agrego la funcionalidad
        e.preventDefault();

        $periodo = $("#periodo").clone();
        //  console.log($periodo);
        lista = $(this).attr("id").split("_")[1];
        nPeriodos[lista]++;
        //   console.log(nPeriodos);
        $periodo.attr("id", "periodo_" + lista + "_" + nPeriodos[lista]);
        $periodo.appendTo("#listaPeriodos_" + lista);
        // alert("pasa");
        // return false;

        //ponemos id's a las fechas iniciales
        $desde = $("#periodo_" + lista + "_" + nPeriodos[lista] + " #sdm_");
        //  console.log($desde);
        $desde.attr("id", "sdm_" + lista + "_" + nPeriodos[lista]);
        //  console.log($desde);
        $desde.attr("name", "sdm_" + lista + "_" + nPeriodos[lista]);
        // console.log($desde);
        $desde.addClass("actualizable");
        $desde = $("#periodo_" + lista + "_" + nPeriodos[lista] + " #sdd_");
        $desde.attr("id", "sdd_" + lista + "_" + nPeriodos[lista]);
        $desde.attr("name", "sdd_" + lista + "_" + nPeriodos[lista]);
        $desde.addClass("actualizable");


        $hasta = $("#periodo_" + lista + "_" + nPeriodos[lista] + " #shm_");
        $hasta.attr("id", "shm_" + lista + "_" + nPeriodos[lista]);
        $hasta.attr("name", "shm_" + lista + "_" + nPeriodos[lista]);
        $hasta.addClass("actualizable");
        $hasta = $("#periodo_" + lista + "_" + nPeriodos[lista] + " #shd_");
        $hasta.attr("id", "shd_" + lista + "_" + nPeriodos[lista]);
        $hasta.attr("name", "shd_" + lista + "_" + nPeriodos[lista]);
        $hasta.addClass("actualizable");

        //le ponemos accion a los periodos
        $eliminarPeriodo = $("#periodo_" + lista + "_" + nPeriodos[lista] + " #eliminarPeriodo");
        $eliminarPeriodo.removeClass("hide");
        $eliminarPeriodo.attr("id", "eliminarPeriodo_" + lista + "_" + nPeriodos[lista]);


        $("#verDivs").addClass("btn-success");

    });





    //funcion que desbloquea un dia luego de seleccionar un mes
    $(document).on("change", ".select-mes", function() {
        opt = parseInt($(this).val());        
        select = $(this).attr("id");
        select = select.substring(3);
        select = ($(this).data("tipo") == "inicio") ? "sdd" + select : "shd" + select;
        $("#" + select + " option").remove();
        if (opt > 0) {
            //agregamos las opciones al select respectivo
            $("#" + select).prop("disabled", false);
            $("#" + select + " option:selected").remove();
            for (i = 1; i <= dias[opt]; i++) {
                $("#" + select).append(new Option(i, i));
            }
        } else {
            $("#" + select).append(new Option("Dia", 0));
            $("#" + select).prop("disabled", true);
        }

        $("#verDivs").addClass("btn-success");

    });


    //funcion que carga todos los select con las fechas guardadas en el atributo data fecha;
    $(".select-mes").each(function(i) {
        if ($(this).data("fecha") != undefined) {
            id = $(this).attr("id");
            id = id.substring(3);
            fecha = $(this).data("fecha");
            //alert(fecha);
            fecha = fecha.split("-");
            window.console.log(fecha[0]);
            $(this).val(fecha[0]);  // ojo lo cambie
            tipo = $(this).data("tipo");
            select = (tipo == "inicio") ? "sdd" : "shd";
            $("#" + select + "" + id + " option").remove();
            for (i = 1; i <= dias[parseInt(fecha[0])]; i++) {
                $("#" + select + "" + id).append(new Option(i, i));
            }
            $("#" + select + "" + id).prop("disabled", false);
            $("#" + select + "" + id).val(parseInt(fecha[1]));  //ojo lo cambie
        }
    // $("#verDivs").addClass("btn-success"); 
    });

    //funcion que elimina temporadas
    $(document).on('click',".eliminarTemporada", function(e) {
        e.preventDefault();
        temp = $(this).attr("id").split("_")[1];
        if (temp == 1) {
            alert('Esta temporada no se puede eliminar');
            return false;
        }
        if (confirm("¿Está seguro que quiere eliminar esta temporada?")) {
            $("#temp_" + temp).remove();
            nPeriodos[temp] = false;
        }
        deletes.push($(this).data("temporada"));
        // console.log(deletes);
        $("#verDivs").addClass("btn-success");

    });

    //funcion que guarda los cargados
    cargado = new Array();
    cargado.push("");
    $(".cargado").each(function(e) {
        // alert("pass");
        cargado.push($(this).data("temporada"));
    });


    //funcion que elimina un periodo    
    $(document).on('click',".eliminarPeriodo", function(t) {
        t.preventDefault();
        data = $(this).attr("id").split("_");
        $("#periodo_" + data[1] + "_" + data[2]).remove();
        $("#verDivs").addClass("btn-success");
    });



    $("#nuevaTemporada").click(function() {
        $("#agregarTemporada").trigger("click");        
    //crearDivTemporada();
       
    });

    //funcion para editar el nombre de una temporada


    $("#verDivs").click(function() {
        //  alert("pasa");
        if (validar()) {
            //  alert("valido");
            guardarInformacion();
            return true;
        }
        return false;
    });
});



function validar() {
    if (!camposLlenos())
        return false;
    if (!verificarFechas())
        return false; 
    return true;
}

function camposLlenos() {
    valid = true;
    $("select.actualizable").each(function(e) {
        if (!($(this).val() > 0)) {
            alert("Faltan fechas por asignar");
            $(this).focus();
            valid = false;
            return false;
        }
    });

    return valid;
;
}


function verificarFechas() {
    used = new Array();
    meses = new Array(0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
    for (i = 1; i <= 365; i++) {
        used[i] = false;
    }
    valid = true;

    error = false;
    $(".periodo").each(function(e) {
        if ($(this).is(":visible")) {
            select = $(this).find("select.select-mes").attr("id");
            //  alert(select);
            select = select.split("_");            
            l = select[1];
            p = select[2];
            
            

            mes1 = $("#sdm_" + l + "_" + p).val();
            dia1 = $("#sdd_" + l + "_" + p).val();
            mes2 = $("#shm_" + l + "_" + p).val();
            dia2 = $("#shd_" + l + "_" + p).val();
            
            //alert(mes1 + "--" + dia1 + "--" + mes2 + "--" + dia2);
            
            
            d3 = meses[parseInt(mes1)] + parseInt(dia1);
            d4 = meses[parseInt(mes2)] + parseInt(dia2);
            //  console.log(mes1 + " " + dia1 + " " + mes2 + " " + dia2 + " " + d3 + " " + d4);



            if (d3 >= d4) {
                alert("La fecha de terminación debe ser posterior a la de inicio");
                $(this).find("#sdm_" + l + "_" + p).focus();
                error = true;
                valid = false;
                return false;
            } else {
                for (i = d3; i <= d4; i++) {
                    if (!used[i]) {
                        used[i] = true;
                    }
                    else {
                        alert("Las fechas de algunos periodos se cruzan, por favor verifique la información");
                        $(this).find("#sdm_" + l + "_" + p).focus();
                        error = true;
                        valid = false;
                        return false;
                    }
                }
            }
        }
    });
    if (!error) {
        for (i = 1; i <= 365; i++) {
            if (!used[i]) {
                alert("Hay algunos dias del año que no pertenecen a ningun periodo, por favor verifique la información");
                //
                //  console.log(used);
                valid = false;
                break;
            }
        }
    }
    return valid;

}

function guardarInformacion() {
    $("#nTemporadas").attr("value", nDivs);
    $("#nPeriodos").attr("value", nPeriodos);
    $("#deletes").attr("value", deletes);
    $("#cargado").attr("value", cargado);
}






